Genesis 3D

 

per collaborazioni, commenti, critiche, e altro contattateci alla e-mail: clubinfo@libero.it risponderemo al pių presto!

Corso sull'engine 3D di Genesis

Sesta lezione

di Luca Sabatucci

Per commentare, dare suggerimenti o consigli (molto apprezzati) e per segnalare eventuali errori o
disattenzioni (sempre possibili), puoi inviare una email all'autore (clicca sul nome sopra). Grazie per la collaborazione!


Modellazione con Milkshape

In questo tutorial prendiamo confidenza con gli strumenti a disposizione. Per prima cosa fissiamo un obiettivo. Utilizzeremo Milkshape per creare un personaggio stilizzato con pochi essenziali poligoni, gli forniremo una texture e una semplice animazione.

Contenuto della directory:

Prepariamo le texture

Un passo essenziale per la riuscita della modellazione è quello di cercare in anticipo le immagini da usare come texture. Nel nostro esempio utilizzeremo la pelle della giraffa e quella della mucca.

__

Utilizzeremo la prima per ricoprire il corpo di Proto e la seconda per gli arti. Per la testa invece useremo un materiale senza alcune texture.

Importante rispettare le dimenzioni delle texture: larghezza e altezza devono essere una potenza di 2 (e uguali), quindi si possono usare 32x32, 64x64, 128x128, 256x256. Texture più grandi non sono permesse. Inoltre il numero di colori non può superare 256 (attenzione all'ultimo colore della palette che viene usato per le trasparenze). Le texture devono essere salvate in formato bitmap (.bmp a 8 bit)

Modellazione body

Una volta pronte le texture possiamo inziare la modellazione. Potremmo utilizzare 3D studio MAX per realizzare questa operazione e poi esportare le mesh per il programma milkshape. Per oggetti molto complicati questa è la strada che conviene seguire. nel nostro caso si tratta di un oggetto molto semplice che non richiede strumenti di modellazione precisi, quindi usiamo direttamente Milkshape.

La schermata inziale dovrebbe apparire circa così

:

Le quattro aree rappresentano quattro differenti viste della scena, mentre a destra c'è la barra con le opzioni.

Dalla barra Model, aggiungiamo un parallelepipedo, una sfera e un cilindro facendo click sull'appropriato bottone, selezionando un punto in una delle 4 viste e trascinando il mouse per stabilire la dimensione.
Nella vista forntale e in quella laterale deve spuntare qualcosa tipo l'immagine in figura.

Adesso chiariamo un aspetto molto importante delle animazioni per genesis. Genesis supporta un solo tipo di animazioni. L'oggetto da animare deve presentare uno scheletro organizzato in una struttura gerarchica. Quindi le mesh da animare devono essere collegate alle ossa (bones); l'animazione quindi deve essere applicata alle bones e non ai vertici dell'oggetto. Questa introduzione è importante soprattutto per chi usa 3D Studio perchè permette una grande quantità di possibilità per gestire le animazioni.

Prima di procedere diamo un nome significativo ad ogni elemento dell'omino. Questo può essere fatto nella sezione Group. Inizialmente dovrebbe assomigliare a questa:

Un gruppo è un insieme di facce che costituiscono un "unione logica" quando si crea una primitiva (ad esempio Box) questa è automaticamente un Gruppo. Ma si possono sempre creare nuovi gruppi. Questo risulta importante soprattutto nella gestione delle texture. Adesso comunque ci vanno bene questi gruppi.
Selezioniamo ogni voce e assegniamo i nomi come in figura.

Semplicemente scrivendo il nome desiderato per la voce scelta e premendo su Rename. Se si ha il dubbio di quale mesh corrisponde al gruppo, si può deselzionare la figura (cliccando su Model/Select e un punto vuoto qualunque della vista) e poi tornando a Group si prema su Select. Si evidenzierà solo la mesh corrispondente.

Aggiungiamo uno scheletro

Uno scheletro è una organizzazione gerarchica di oggetti chiamati bone. Deve essere creato un bone radice e ad esso possono essere collegati i bone figli. A loro volta i bone figli possono essere padri e così via.
La gerarchia è importante perchè un movimento del bone padre si propaga nella catena su tutti i suoi figli. Mentre un movimento del bone figlio non si propaga verso il padre.
Questo ci deve suggerire l'uso che faremo dello scheletro. Immaginiamo per ora solo un braccio, formato da tra parti: spalla, braccio e avanbraccio. Se solleviamo la spalla, tutta la struttura si solleva in modo rigido. Se invece ruotiamo il braccio, solo l'avambraccio subirà la stessa rotazione, mentre la spalla non sarà interessata.

Creiamo una struttura scheletrica sovraponendola al modello. Torniamo al pannello Model. Allargiamo la vista frontale cliccandovi con il tasto destro e selezionando Maximize. Impariamo subito due utili comandi per selezionare la vista migliore sull'oggetto. Assicuriamoci che il pulsante "seleziona" non sia premuto. Premendo Shift sulla tastiera chicchiamo sulla vista e trasciniamo il mouse. L'effetto è quello dello Zoom. Attenzione non stiamo scalando le dimensioni dell'oggetto ma solo cambiando la viewport. Premendo invece Ctrl si ha uno spostamento della viewport.

Selezioniamo dai Tools il pulsante Joint (giuntura = bone)e premiamo in corrispondenza dello stomaco dell'omino. Abbiamo appena creato il nodo radice. Cliccando altrove nella vista si creano tutti i figli. Per fare in modo che da uno stesso nodo partano più figli bisogna selezionare il nodo interessato. Per farlo si vada in Select nella barra Model e tra le "select options" si scelga Joint. Adesso si può selezionare il nodo interessato, cliccare nuovamente in Tools/Joint e creare la sottostruttura.
Realizzare qualcosa che assomigli a questo:

In modo del tutto analogo a quanto visto prima rinominiamo le bone del modello. Andiamo nel pannello Joints e diamo i seguenti nomi:

Colleghiamo il modello allo scheletro

Ancora modello e scheletro sono due entità separate, in quanto non abbiamo effettuato l'assegnazione. L'assegnazione deve seguire delle semplici regole. Ogni vertice deve essere collegato ad un bone. Ci possono essere bone a cui non è collegato nessun vertice. Fine.

Effettuiamo il collegamento del corpo al nodo radice.
Si prema su Model/Select e si deselezioni la figura. Si scelga l'opzione Vertex e ci si assicuri che la casella Ignore Backfaces non sia spuntata. A questo punto si selezionino i quattro vertici del corpo, o tutti assieme, o singolarmente premendo Shift per aggiungere il vertice alla selezione. In realtà si sono selezionati tutti e otto i vertici perché l'opzione Ignore Backfaces, quando non è selezionata, fa si che la selezione valga anche per i vertici che stanno dietro.

Adesso senza deselezionare i vertici si scelga l'opzione Joint e sempre premendo Shift si selezioni il nodo radice:

Adesso spostiamoci sul pannello Joints e premiamo il pulsante Assign.
Ripetiamo l'operazione collegando le braccia ai joint spalla e le gambe ai joint anca; non si scordi di collegare la testa al Joint collo.
Finita questa operazione un pò noiosa si controlli se qualche vertice non è stato dimenticato. Si vada nel pannello joints e si prema SelUnassigned. Se qualche vertice si illumina di rosso vuol direche è stato dimenticato. In queste condizioni il modello non può essere esportato, quindi si proceda nel correggere questo errore.

__


Aggiungiamo le texture.

Il modello già così per come è potrebbe essere esportato e verrebbe visualizzato senza alcune texture. Vedremo che l'aggiunta della texture corretta fornisce quel "qualcosa in più" al nostro modello.
Andiamo nel pannello Materials.

Un materiale in Milkshape può essere di due tipi: o una ombreggiatura, oppure una texture. Nel primo caso dovremmo assegnare i valori di Ambient, Diffuse, Specular e Emissive. Nel secondo caso dovremo selezionare la bitmap corretta e assegnare le coordinate di mappatura. Utilizzeremo entrambe le tecniche.

Per prima cosa torniamo alla vista a quattro finestre cliccando con il tasto destro e deselezionando maximize. Adesso sempre col tasto destro clicchiamo nella vista prospettica e scegliamo la visualizzazione "textured".
Premiamo New dal pannello e diamo il nome "Giraffa".

Premere il primo dei due pulsanti in cui spunta la dicitura <none>. Compare una finestra per la selezione della texture. Scegliere quella beige a macchie marroni.
Quindi nel pannello Model, scegliere select e come opzione Group e selezionare il corpo dell'omino. Adesso tornare nel pannello material e scegliere Assign. La vista 3D dovrebbe già mostrare il cambiamento. Andare nel pannello Groups e notare che al corpo è stato associato il materiale giraffa.
Procedere analogamente per il materiale mucca e assegnarlo agli arti.
Per la testa creeremo un materiale di nome "untextured" e sceglieremo un colore di ambient sul verdino. Giocare un pò con gli altri parametri per capire il significato.
Quindi assegniamo alla testa il materiale untexured. Si faccia molta attenzione: un modello può essere già esportato senza l'aggiunta di un materiale. Quando si decide di assegnare un materiale, tutti i gruppi devono essere assegnati a qualcosa. Altrimenti il modello non verrà importato correttamente in genesis.

Ecco come dovrebbe risultare l'omino:

Animazione

Gli strumenti di animazione messi a disposizione da Milkshape purtroppo non sono potentissimi, ma bisogna accontentarsi in quanto si tratta di un programma shareware.
Per iniziare la fase di animazione si deve premere il pulsante Anim in fondo a destra. Finche il pulsante risulta illuminato ci troviamo nella modalità animazione. La barra in basso è una barra temporale che ci permette di muoverci tra i vari frames dell'animazione.

Un'animazione 2D/3D si sviluppa entro una sequenza temporale la cui unità di misura è il frame. L'animazione è composta da keyframe. Un keyframe è una sorta di fotografia del modello in un certo istante di tempo; in termini tecnici si tratta di assegnare una matrice di trasformazione (traslazione, rotazione, scala) alle singole parti del modello (ne nostro caso alle bone). Si immagini quindi l'animazione come una serie di fotografie. Più keyframe ci sono più sarà lunga e complessa l'animazione. Ma i keyframe non devono essere necessariamente ad ogni frame. Cosa succede se tra un keyframe e l'altro intercorre del tempo? La risposta è dipende dal programma. Milkshape effettua una interpolazione lineare. Lo stesso fa il motore grafico della genesis. Il 3D Studio permette una gran quantità di interpolazioni, compreso la possibilità di definire delle curve di Bezier e definire frame per frame cosa succede.

Per scopi semplici come il nostro, l'interpolazione lineare è più che sufficiente. Animare in Milkshape è estremamente semplice. Si sposta la barra temporale al frame voluto.

Si effettuano le modifiche direttamente sulle bones del modello. Quando si ritiene che il keyframe è pronto si prema Ctrl + K per fissare il keyframe. Quindi si può passare al successivo. Quando l'animazione è terminata si può vedere premendo > nella barra in basso.

Nel nostro esempio ho creato 3 keyframe, in 0.0, 16.0 e 30.0
Ecco come si presenta la vista laterale e quella prospettica in corrispondenza ai tre keyframe:

keyframe 1:

keyframe 2:

keyframe 3:

Come si può notare il keyframe 1 e il 3 sono abbastanza simili perché si vuole creare una animazione a ciclo infinito.

Questo articolo č stato scaricato dal Club di informatica
Pagina curata da:
Luca Sabatucci